package projeto.administrativo.funcionario.cih;

import java.util.ArrayList;
import java.util.List;

import nucleo.comuns.util.NucleoMensagens;
import nucleo.comuns.visao.NucleoTab;

import org.zkoss.zk.ui.event.Events;
import org.zkoss.zkplus.spring.SpringUtil;
import org.zkoss.zul.Groupbox;
import org.zkoss.zul.Label;
import org.zkoss.zul.Separator;
import org.zkoss.zul.Vlayout;

import plataforma.autenticacao.cdp.GrupoAcesso;
import plataforma.base.cdp.ExcecaoRegraNegocio;
import plataforma.cih.campos.CampoCheckBox;
import plataforma.cih.campos.CampoData;
import plataforma.cih.campos.CampoEmail;
import plataforma.cih.campos.CampoTexto;
import plataforma.crud.cih.GridDados;
import plataforma.crudestatico.cih.FormularioDadosCRUDEstatico;
import plataforma.crudestatico.cih.FormularioDadosCRUDEstatico.ModoExibicao;
import projeto.administrativo.colaboradorexterno.cih.AbaFuncaoServico;
import projeto.administrativo.funcionario.cdp.Funcionario;
import projeto.comercial.funcaoservico.cdp.FuncaoServico;
import projeto.comercial.funcaoservico.cgd.DaoFuncaoServico;
import projeto.ramoAtividade.cdp.RamoAtividade;
import projeto.ramoAtividade.cgd.DaoRamoAtividade;

public class FormDadosFuncionario extends
		FormularioDadosCRUDEstatico<Funcionario> {

	AbaDadosResponsavelAtividade abaResponsavel;
	AbaDadosFuncionario abaFuncionario;
	
	AbaFuncaoServico abaFuncaoServico;

	@Override
	protected List definirTabs() {

		List<NucleoTab> listaTabs = new ArrayList<NucleoTab>();
		abaResponsavel = new AbaDadosResponsavelAtividade();
		abaFuncionario = new AbaDadosFuncionario();
		abaFuncaoServico = new AbaFuncaoServico();

		listaTabs.add(abaResponsavel);
		listaTabs.add(abaFuncionario);
		listaTabs.add(abaFuncaoServico);

		return listaTabs;
	}

	@Override
	protected void preencherDadosObjeto(Funcionario objeto) {
		objeto.setNome(abaResponsavel.getCampoNome().getValue());
		objeto.setEmail(abaResponsavel.getCampoemail().getValue());			
		objeto.setTelefoneOutro(abaResponsavel.getCampotelefoneOutro()
				.getValue());
		
		objeto.setEndereco(abaResponsavel.getCampoendereco().getValue());

		objeto.setCpf(abaFuncionario.getCampocpf().getValue());
		objeto.setRg(abaFuncionario.getCamporg().getValue());
		objeto.setDataAdmissao(abaFuncionario.getCampodataAdmissao().getValue());
		objeto.setDataDemissao(abaFuncionario.getCampodataDemissao().getValue());
		
		objeto.setFuncaoServico(abaFuncaoServico.getSetFuncaoServico());

	}

	@Override
	protected void preencherDadosTela(Funcionario objeto)
			throws ExcecaoRegraNegocio {
		abaResponsavel.getCampoNome().setValue(objeto.getNome());
		abaResponsavel.getCampoemail().setValue(objeto.getEmail());
		
		
		abaResponsavel.getCampotelefoneOutro().setValue(
				objeto.getTelefoneOutro());
		
		abaResponsavel.getCampoendereco().setValue(objeto.getEndereco());

		abaFuncionario.getCampocpf().setValue(objeto.getCpf());
		abaFuncionario.getCamporg().setValue(objeto.getRg());
		abaFuncionario.getCampodataAdmissao()
				.setValue(objeto.getDataAdmissao());
		abaFuncionario.getCampodataDemissao()
				.setValue(objeto.getDataDemissao());
		
		
		DaoFuncaoServico daoFuncao  = SpringUtil.getApplicationContext().getBean(
				DaoFuncaoServico.class);
		List<FuncaoServico> todasFuncoes = daoFuncao.recuperarTodosAtivoComOrdenacao("descricao");

		abaFuncaoServico.setFuncaoServico(objeto.getFuncaoServico(), todasFuncoes);

	}
	
	
	public void configurarExtensao() {		
		if (getModoExibicao() == ModoExibicao.NOVO) {
			
			//funcoes de servico			
			DaoFuncaoServico daoFuncao  = SpringUtil.getApplicationContext().getBean(
					DaoFuncaoServico.class);
			List<FuncaoServico> todasFuncoes = daoFuncao.recuperarTodosAtivoComOrdenacao("descricao");
			abaFuncaoServico.setFuncaoServico(getObjetoCadastroDados().getFuncaoServico(), todasFuncoes);
					
		}

	}

	@Override
	public boolean isValid() {
		if (abaResponsavel.isValid() && abaFuncionario.isValid())
			return true;

		return false;
	}
}
